<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.15"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>CryptoAuthLib: Host side crypto methods (atcah_)</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
  $(document).ready(initResizable);
/* @license-end */</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">CryptoAuthLib
   </div>
   <div id="projectbrief">Microchip CryptoAuthentication Library</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.15 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('a00994.html','');});
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#func-members">Functions</a> &#124;
<a href="#var-members">Variables</a>  </div>
  <div class="headertitle">
<div class="title">Host side crypto methods (atcah_)</div>  </div>
</div><!--header-->
<div class="contents">

<p>Use these functions if your system does not use an ATCADevice as a host but implements the host in firmware. The functions provide host-side cryptographic functionality for an ATECC client device. They are intended to accompany the CryptoAuthLib functions. They can be called directly from an application, or integrated into an API.  
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a01149.html">atca_temp_key</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Structure to hold TempKey fields.  <a href="a01149.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a01153.html">atca_include_data_in_out</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Input / output parameters for function atca_include_data().  <a href="a01153.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a01157.html">atca_nonce_in_out</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Input/output parameters for function atca_nonce().  <a href="a01157.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a01161.html">atca_io_decrypt_in_out</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a01165.html">atca_verify_mac</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a01169.html">atca_secureboot_enc_in_out</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a01173.html">atca_secureboot_mac_in_out</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a01177.html">atca_mac_in_out</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Input/output parameters for function atca_mac().  <a href="a01177.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a01181.html">atca_hmac_in_out</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Input/output parameters for function atca_hmac().  <a href="a01181.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a01185.html">atca_gen_dig_in_out</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Input/output parameters for function <a class="el" href="a00994.html#ga6f6043ba8eebbaab6e6f3b4fa5e31ad4" title="This function combines the current TempKey with a stored value.">atcah_gen_dig()</a>.  <a href="a01185.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a01189.html">atca_write_mac_in_out</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Input/output parameters for function <a class="el" href="a00994.html#ga47853951c57803eff1432780bf360057" title="This function calculates the input MAC for the Write command.">atcah_write_auth_mac()</a> and <a class="el" href="a00994.html#gaed8aa58875c6bdf46a937313e69c6ebb" title="This function calculates the input MAC for the PrivWrite command.">atcah_privwrite_auth_mac()</a>.  <a href="a01189.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a01193.html">atca_derive_key_in_out</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Input/output parameters for function <a class="el" href="a00994.html#ga02b3479eaee1bd1741675c2a1249ffda" title="This function derives a key with a key and TempKey.">atcah_derive_key()</a>.  <a href="a01193.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a01197.html">atca_derive_key_mac_in_out</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Input/output parameters for function <a class="el" href="a00994.html#ga60fc543b3df6fa1dedfbf59e5bde554b" title="This function calculates the input MAC for a DeriveKey command.">atcah_derive_key_mac()</a>.  <a href="a01197.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a01201.html">atca_decrypt_in_out</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Input/output parameters for function atca_decrypt().  <a href="a01201.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a01205.html">atca_check_mac_in_out</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Input/output parameters for function <a class="el" href="a00994.html#ga5b457cd0ccba73864eee4030b6079ba7" title="This function performs the checkmac operation to generate client response on the host side .">atcah_check_mac()</a>.  <a href="a01205.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a01209.html">atca_verify_in_out</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Input/output parameters for function atcah_verify().  <a href="a01209.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a01213.html">atca_gen_key_in_out</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Input/output parameters for calculating the PubKey digest put into TempKey by the GenKey command with the <a class="el" href="a00994.html#gabf2abd4bd62f47537756c9ab109050c0" title="Calculate the PubKey digest created by GenKey and saved to TempKey.">atcah_gen_key_msg()</a> function.  <a href="a01213.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a01217.html">atca_sign_internal_in_out</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Input/output parameters for calculating the message and digest used by the Sign(internal) command. Used with the <a class="el" href="a00994.html#ga680045caed6e8f6e136e1a2dc3fe1c9e" title="Builds the full message that would be signed by the Sign(Internal) command.">atcah_sign_internal_msg()</a> function.  <a href="a01217.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:ga30bc02410edabefa2e210709b00105de"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="a01149.html">atca_temp_key</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#ga30bc02410edabefa2e210709b00105de">atca_temp_key_t</a></td></tr>
<tr class="memdesc:ga30bc02410edabefa2e210709b00105de"><td class="mdescLeft">&#160;</td><td class="mdescRight">Structure to hold TempKey fields.  <a href="#ga30bc02410edabefa2e210709b00105de">More...</a><br /></td></tr>
<tr class="separator:ga30bc02410edabefa2e210709b00105de"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae9d8a27e97696e2e02cea680ea44e3f2"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="a01157.html">atca_nonce_in_out</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#gae9d8a27e97696e2e02cea680ea44e3f2">atca_nonce_in_out_t</a></td></tr>
<tr class="separator:gae9d8a27e97696e2e02cea680ea44e3f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga787a3ef3bd9a6feaf71b50fc127b619d"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="a01161.html">atca_io_decrypt_in_out</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#ga787a3ef3bd9a6feaf71b50fc127b619d">atca_io_decrypt_in_out_t</a></td></tr>
<tr class="separator:ga787a3ef3bd9a6feaf71b50fc127b619d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga39d794a93edb13943760550086940fa4"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="a01165.html">atca_verify_mac</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#ga39d794a93edb13943760550086940fa4">atca_verify_mac_in_out_t</a></td></tr>
<tr class="separator:ga39d794a93edb13943760550086940fa4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa60674423eaa2e7f37f2c1cf2855f2d7"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="a01169.html">atca_secureboot_enc_in_out</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#gaa60674423eaa2e7f37f2c1cf2855f2d7">atca_secureboot_enc_in_out_t</a></td></tr>
<tr class="separator:gaa60674423eaa2e7f37f2c1cf2855f2d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gace9a9d1e2e34d294e573098600b6f061"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="a01173.html">atca_secureboot_mac_in_out</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#gace9a9d1e2e34d294e573098600b6f061">atca_secureboot_mac_in_out_t</a></td></tr>
<tr class="separator:gace9a9d1e2e34d294e573098600b6f061"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga21e3f5ec2d0765d3e98432c4e8498350"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="a01177.html">atca_mac_in_out</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#ga21e3f5ec2d0765d3e98432c4e8498350">atca_mac_in_out_t</a></td></tr>
<tr class="separator:ga21e3f5ec2d0765d3e98432c4e8498350"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5ed81b300bd0d04f88708ad122d3a53a"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="a01185.html">atca_gen_dig_in_out</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#ga5ed81b300bd0d04f88708ad122d3a53a">atca_gen_dig_in_out_t</a></td></tr>
<tr class="memdesc:ga5ed81b300bd0d04f88708ad122d3a53a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Input/output parameters for function <a class="el" href="a00994.html#ga6f6043ba8eebbaab6e6f3b4fa5e31ad4" title="This function combines the current TempKey with a stored value.">atcah_gen_dig()</a>.  <a href="#ga5ed81b300bd0d04f88708ad122d3a53a">More...</a><br /></td></tr>
<tr class="separator:ga5ed81b300bd0d04f88708ad122d3a53a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gafeefb2141ebb14988f08eb86f7cd6608"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="a01189.html">atca_write_mac_in_out</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#gafeefb2141ebb14988f08eb86f7cd6608">atca_write_mac_in_out_t</a></td></tr>
<tr class="memdesc:gafeefb2141ebb14988f08eb86f7cd6608"><td class="mdescLeft">&#160;</td><td class="mdescRight">Input/output parameters for function <a class="el" href="a00994.html#ga47853951c57803eff1432780bf360057" title="This function calculates the input MAC for the Write command.">atcah_write_auth_mac()</a> and <a class="el" href="a00994.html#gaed8aa58875c6bdf46a937313e69c6ebb" title="This function calculates the input MAC for the PrivWrite command.">atcah_privwrite_auth_mac()</a>.  <a href="#gafeefb2141ebb14988f08eb86f7cd6608">More...</a><br /></td></tr>
<tr class="separator:gafeefb2141ebb14988f08eb86f7cd6608"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga897821490d4d10e168f1c94cd67966e7"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="a01205.html">atca_check_mac_in_out</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#ga897821490d4d10e168f1c94cd67966e7">atca_check_mac_in_out_t</a></td></tr>
<tr class="memdesc:ga897821490d4d10e168f1c94cd67966e7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Input/output parameters for function <a class="el" href="a00994.html#ga5b457cd0ccba73864eee4030b6079ba7" title="This function performs the checkmac operation to generate client response on the host side .">atcah_check_mac()</a>.  <a href="#ga897821490d4d10e168f1c94cd67966e7">More...</a><br /></td></tr>
<tr class="separator:ga897821490d4d10e168f1c94cd67966e7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab4d485e0545aa3defd75702fe51f9a13"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="a01209.html">atca_verify_in_out</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#gab4d485e0545aa3defd75702fe51f9a13">atca_verify_in_out_t</a></td></tr>
<tr class="separator:gab4d485e0545aa3defd75702fe51f9a13"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga804b097bbb0a7086f7d208390689146b"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="a01213.html">atca_gen_key_in_out</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#ga804b097bbb0a7086f7d208390689146b">atca_gen_key_in_out_t</a></td></tr>
<tr class="memdesc:ga804b097bbb0a7086f7d208390689146b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Input/output parameters for calculating the PubKey digest put into TempKey by the GenKey command with the <a class="el" href="a00994.html#gabf2abd4bd62f47537756c9ab109050c0" title="Calculate the PubKey digest created by GenKey and saved to TempKey.">atcah_gen_key_msg()</a> function.  <a href="#ga804b097bbb0a7086f7d208390689146b">More...</a><br /></td></tr>
<tr class="separator:ga804b097bbb0a7086f7d208390689146b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gafdb82fc57fb953626c28c757a5220274"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="a01217.html">atca_sign_internal_in_out</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#gafdb82fc57fb953626c28c757a5220274">atca_sign_internal_in_out_t</a></td></tr>
<tr class="memdesc:gafdb82fc57fb953626c28c757a5220274"><td class="mdescLeft">&#160;</td><td class="mdescRight">Input/output parameters for calculating the message and digest used by the Sign(internal) command. Used with the <a class="el" href="a00994.html#ga680045caed6e8f6e136e1a2dc3fe1c9e" title="Builds the full message that would be signed by the Sign(Internal) command.">atcah_sign_internal_msg()</a> function.  <a href="#gafdb82fc57fb953626c28c757a5220274">More...</a><br /></td></tr>
<tr class="separator:gafdb82fc57fb953626c28c757a5220274"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga9ee18575f8b4c1560f9e5c741403ef1b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00173.html#a22bd6643f31f1d75dc3e7ea939f468cd">ATCA_STATUS</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#ga9ee18575f8b4c1560f9e5c741403ef1b">atcah_nonce</a> (struct <a class="el" href="a01157.html">atca_nonce_in_out</a> *param)</td></tr>
<tr class="memdesc:ga9ee18575f8b4c1560f9e5c741403ef1b"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function calculates host side nonce with the parameters passed.  <a href="#ga9ee18575f8b4c1560f9e5c741403ef1b">More...</a><br /></td></tr>
<tr class="separator:ga9ee18575f8b4c1560f9e5c741403ef1b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga44361cadf1819cea687208eeadd57059"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00173.html#a22bd6643f31f1d75dc3e7ea939f468cd">ATCA_STATUS</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#ga44361cadf1819cea687208eeadd57059">atcah_mac</a> (struct <a class="el" href="a01177.html">atca_mac_in_out</a> *param)</td></tr>
<tr class="memdesc:ga44361cadf1819cea687208eeadd57059"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function generates an SHA-256 digest (MAC) of a key, challenge, and other information.  <a href="#ga44361cadf1819cea687208eeadd57059">More...</a><br /></td></tr>
<tr class="separator:ga44361cadf1819cea687208eeadd57059"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5b457cd0ccba73864eee4030b6079ba7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00173.html#a22bd6643f31f1d75dc3e7ea939f468cd">ATCA_STATUS</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#ga5b457cd0ccba73864eee4030b6079ba7">atcah_check_mac</a> (struct <a class="el" href="a01205.html">atca_check_mac_in_out</a> *param)</td></tr>
<tr class="memdesc:ga5b457cd0ccba73864eee4030b6079ba7"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function performs the checkmac operation to generate client response on the host side .  <a href="#ga5b457cd0ccba73864eee4030b6079ba7">More...</a><br /></td></tr>
<tr class="separator:ga5b457cd0ccba73864eee4030b6079ba7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab17435577e546d2954bd697f21e6d3cc"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00173.html#a22bd6643f31f1d75dc3e7ea939f468cd">ATCA_STATUS</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#gab17435577e546d2954bd697f21e6d3cc">atcah_hmac</a> (struct <a class="el" href="a01181.html">atca_hmac_in_out</a> *param)</td></tr>
<tr class="memdesc:gab17435577e546d2954bd697f21e6d3cc"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function generates an HMAC / SHA-256 hash of a key and other information.  <a href="#gab17435577e546d2954bd697f21e6d3cc">More...</a><br /></td></tr>
<tr class="separator:gab17435577e546d2954bd697f21e6d3cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6f6043ba8eebbaab6e6f3b4fa5e31ad4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00173.html#a22bd6643f31f1d75dc3e7ea939f468cd">ATCA_STATUS</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#ga6f6043ba8eebbaab6e6f3b4fa5e31ad4">atcah_gen_dig</a> (struct <a class="el" href="a01185.html">atca_gen_dig_in_out</a> *param)</td></tr>
<tr class="memdesc:ga6f6043ba8eebbaab6e6f3b4fa5e31ad4"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function combines the current TempKey with a stored value.  <a href="#ga6f6043ba8eebbaab6e6f3b4fa5e31ad4">More...</a><br /></td></tr>
<tr class="separator:ga6f6043ba8eebbaab6e6f3b4fa5e31ad4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga43ef2dc1159f28fbb100a2b9bf150c0c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00173.html#a22bd6643f31f1d75dc3e7ea939f468cd">ATCA_STATUS</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#ga43ef2dc1159f28fbb100a2b9bf150c0c">atcah_gen_mac</a> (struct <a class="el" href="a01185.html">atca_gen_dig_in_out</a> *param)</td></tr>
<tr class="memdesc:ga43ef2dc1159f28fbb100a2b9bf150c0c"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function generates mac with session key with a plain text.  <a href="#ga43ef2dc1159f28fbb100a2b9bf150c0c">More...</a><br /></td></tr>
<tr class="separator:ga43ef2dc1159f28fbb100a2b9bf150c0c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga47853951c57803eff1432780bf360057"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00173.html#a22bd6643f31f1d75dc3e7ea939f468cd">ATCA_STATUS</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#ga47853951c57803eff1432780bf360057">atcah_write_auth_mac</a> (struct <a class="el" href="a01189.html">atca_write_mac_in_out</a> *param)</td></tr>
<tr class="memdesc:ga47853951c57803eff1432780bf360057"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function calculates the input MAC for the Write command.  <a href="#ga47853951c57803eff1432780bf360057">More...</a><br /></td></tr>
<tr class="separator:ga47853951c57803eff1432780bf360057"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaed8aa58875c6bdf46a937313e69c6ebb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00173.html#a22bd6643f31f1d75dc3e7ea939f468cd">ATCA_STATUS</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#gaed8aa58875c6bdf46a937313e69c6ebb">atcah_privwrite_auth_mac</a> (struct <a class="el" href="a01189.html">atca_write_mac_in_out</a> *param)</td></tr>
<tr class="memdesc:gaed8aa58875c6bdf46a937313e69c6ebb"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function calculates the input MAC for the PrivWrite command.  <a href="#gaed8aa58875c6bdf46a937313e69c6ebb">More...</a><br /></td></tr>
<tr class="separator:gaed8aa58875c6bdf46a937313e69c6ebb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga02b3479eaee1bd1741675c2a1249ffda"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00173.html#a22bd6643f31f1d75dc3e7ea939f468cd">ATCA_STATUS</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#ga02b3479eaee1bd1741675c2a1249ffda">atcah_derive_key</a> (struct <a class="el" href="a01193.html">atca_derive_key_in_out</a> *param)</td></tr>
<tr class="memdesc:ga02b3479eaee1bd1741675c2a1249ffda"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function derives a key with a key and TempKey.  <a href="#ga02b3479eaee1bd1741675c2a1249ffda">More...</a><br /></td></tr>
<tr class="separator:ga02b3479eaee1bd1741675c2a1249ffda"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga60fc543b3df6fa1dedfbf59e5bde554b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00173.html#a22bd6643f31f1d75dc3e7ea939f468cd">ATCA_STATUS</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#ga60fc543b3df6fa1dedfbf59e5bde554b">atcah_derive_key_mac</a> (struct <a class="el" href="a01197.html">atca_derive_key_mac_in_out</a> *param)</td></tr>
<tr class="memdesc:ga60fc543b3df6fa1dedfbf59e5bde554b"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function calculates the input MAC for a DeriveKey command.  <a href="#ga60fc543b3df6fa1dedfbf59e5bde554b">More...</a><br /></td></tr>
<tr class="separator:ga60fc543b3df6fa1dedfbf59e5bde554b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga89408b8338dd9f43c4ba85b2a082c3ae"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00173.html#a22bd6643f31f1d75dc3e7ea939f468cd">ATCA_STATUS</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#ga89408b8338dd9f43c4ba85b2a082c3ae">atcah_decrypt</a> (struct <a class="el" href="a01201.html">atca_decrypt_in_out</a> *param)</td></tr>
<tr class="memdesc:ga89408b8338dd9f43c4ba85b2a082c3ae"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function decrypts 32-byte encrypted data received with the Read command.  <a href="#ga89408b8338dd9f43c4ba85b2a082c3ae">More...</a><br /></td></tr>
<tr class="separator:ga89408b8338dd9f43c4ba85b2a082c3ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad7e2217cd71b77b6c1b08f2f2f6f0a3e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00173.html#a22bd6643f31f1d75dc3e7ea939f468cd">ATCA_STATUS</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#gad7e2217cd71b77b6c1b08f2f2f6f0a3e">atcah_sha256</a> (int32_t len, const uint8_t *message, uint8_t *digest)</td></tr>
<tr class="memdesc:gad7e2217cd71b77b6c1b08f2f2f6f0a3e"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function creates a SHA256 digest on a little-endian system.  <a href="#gad7e2217cd71b77b6c1b08f2f2f6f0a3e">More...</a><br /></td></tr>
<tr class="separator:gad7e2217cd71b77b6c1b08f2f2f6f0a3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad456d2c1172343bb40d8cd0e391d44f4"><td class="memItemLeft" align="right" valign="top">uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#gad456d2c1172343bb40d8cd0e391d44f4">atcah_include_data</a> (struct <a class="el" href="a01153.html">atca_include_data_in_out</a> *param)</td></tr>
<tr class="memdesc:gad456d2c1172343bb40d8cd0e391d44f4"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function copies otp and sn data into a command buffer.  <a href="#gad456d2c1172343bb40d8cd0e391d44f4">More...</a><br /></td></tr>
<tr class="separator:gad456d2c1172343bb40d8cd0e391d44f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabf2abd4bd62f47537756c9ab109050c0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00173.html#a22bd6643f31f1d75dc3e7ea939f468cd">ATCA_STATUS</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#gabf2abd4bd62f47537756c9ab109050c0">atcah_gen_key_msg</a> (struct <a class="el" href="a01213.html">atca_gen_key_in_out</a> *param)</td></tr>
<tr class="memdesc:gabf2abd4bd62f47537756c9ab109050c0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate the PubKey digest created by GenKey and saved to TempKey.  <a href="#gabf2abd4bd62f47537756c9ab109050c0">More...</a><br /></td></tr>
<tr class="separator:gabf2abd4bd62f47537756c9ab109050c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga316e7eeaeedc7a30824294280488e24e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00173.html#a22bd6643f31f1d75dc3e7ea939f468cd">ATCA_STATUS</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#ga316e7eeaeedc7a30824294280488e24e">atcah_config_to_sign_internal</a> (<a class="el" href="a00988.html#gafb234ccd6a80d09c0efbe336c2354267">ATCADeviceType</a> device_type, struct <a class="el" href="a01217.html">atca_sign_internal_in_out</a> *param, const uint8_t *config)</td></tr>
<tr class="memdesc:ga316e7eeaeedc7a30824294280488e24e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Populate the slot_config, key_config, and is_slot_locked fields in the <a class="el" href="a01217.html" title="Input/output parameters for calculating the message and digest used by the Sign(internal) command....">atca_sign_internal_in_out</a> structure from the provided config zone.  <a href="#ga316e7eeaeedc7a30824294280488e24e">More...</a><br /></td></tr>
<tr class="separator:ga316e7eeaeedc7a30824294280488e24e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga680045caed6e8f6e136e1a2dc3fe1c9e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00173.html#a22bd6643f31f1d75dc3e7ea939f468cd">ATCA_STATUS</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#ga680045caed6e8f6e136e1a2dc3fe1c9e">atcah_sign_internal_msg</a> (<a class="el" href="a00988.html#gafb234ccd6a80d09c0efbe336c2354267">ATCADeviceType</a> device_type, struct <a class="el" href="a01217.html">atca_sign_internal_in_out</a> *param)</td></tr>
<tr class="memdesc:ga680045caed6e8f6e136e1a2dc3fe1c9e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Builds the full message that would be signed by the Sign(Internal) command.  <a href="#ga680045caed6e8f6e136e1a2dc3fe1c9e">More...</a><br /></td></tr>
<tr class="separator:ga680045caed6e8f6e136e1a2dc3fe1c9e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga03632bc31f21bec0d13d4f0cab198958"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00173.html#a22bd6643f31f1d75dc3e7ea939f468cd">ATCA_STATUS</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#ga03632bc31f21bec0d13d4f0cab198958">atcah_verify_mac</a> (<a class="el" href="a00994.html#ga39d794a93edb13943760550086940fa4">atca_verify_mac_in_out_t</a> *param)</td></tr>
<tr class="memdesc:ga03632bc31f21bec0d13d4f0cab198958"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate the expected MAC on the host side for the Verify command.  <a href="#ga03632bc31f21bec0d13d4f0cab198958">More...</a><br /></td></tr>
<tr class="separator:ga03632bc31f21bec0d13d4f0cab198958"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4c89f8023aec521281824c0e35713baa"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00173.html#a22bd6643f31f1d75dc3e7ea939f468cd">ATCA_STATUS</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#ga4c89f8023aec521281824c0e35713baa">atcah_secureboot_enc</a> (<a class="el" href="a00994.html#gaa60674423eaa2e7f37f2c1cf2855f2d7">atca_secureboot_enc_in_out_t</a> *param)</td></tr>
<tr class="memdesc:ga4c89f8023aec521281824c0e35713baa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Encrypts the digest for the SecureBoot command when using the encrypted digest / validating mac option.  <a href="#ga4c89f8023aec521281824c0e35713baa">More...</a><br /></td></tr>
<tr class="separator:ga4c89f8023aec521281824c0e35713baa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa795bec90432fbfa194913d8b4098fab"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00173.html#a22bd6643f31f1d75dc3e7ea939f468cd">ATCA_STATUS</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#gaa795bec90432fbfa194913d8b4098fab">atcah_secureboot_mac</a> (<a class="el" href="a00994.html#gace9a9d1e2e34d294e573098600b6f061">atca_secureboot_mac_in_out_t</a> *param)</td></tr>
<tr class="memdesc:gaa795bec90432fbfa194913d8b4098fab"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculates the expected MAC returned from the SecureBoot command when verification is a success.  <a href="#gaa795bec90432fbfa194913d8b4098fab">More...</a><br /></td></tr>
<tr class="separator:gaa795bec90432fbfa194913d8b4098fab"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga809ad14c1d8da45d5f74fa4c55373638"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00173.html#a22bd6643f31f1d75dc3e7ea939f468cd">ATCA_STATUS</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#ga809ad14c1d8da45d5f74fa4c55373638">atcah_encode_counter_match</a> (uint32_t counter, uint8_t *counter_match)</td></tr>
<tr class="memdesc:ga809ad14c1d8da45d5f74fa4c55373638"><td class="mdescLeft">&#160;</td><td class="mdescRight">Builds the counter match value that needs to be stored in a slot.  <a href="#ga809ad14c1d8da45d5f74fa4c55373638">More...</a><br /></td></tr>
<tr class="separator:ga809ad14c1d8da45d5f74fa4c55373638"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa0df5937081037684ce2894a8cc2c1e5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00173.html#a22bd6643f31f1d75dc3e7ea939f468cd">ATCA_STATUS</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#gaa0df5937081037684ce2894a8cc2c1e5">atcah_io_decrypt</a> (struct <a class="el" href="a01161.html">atca_io_decrypt_in_out</a> *param)</td></tr>
<tr class="memdesc:gaa0df5937081037684ce2894a8cc2c1e5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Decrypt data that's been encrypted by the IO protection key. The ECDH and KDF commands on the ATECC608A are the only ones that support this operation.  <a href="#gaa0df5937081037684ce2894a8cc2c1e5">More...</a><br /></td></tr>
<tr class="separator:gaa0df5937081037684ce2894a8cc2c1e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:gad87f95f0faf0c6fdfe94040efcb14860"><td class="memItemLeft" align="right" valign="top">uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#gad87f95f0faf0c6fdfe94040efcb14860">p_temp</a></td></tr>
<tr class="memdesc:gad87f95f0faf0c6fdfe94040efcb14860"><td class="mdescLeft">&#160;</td><td class="mdescRight">[out] pointer to output buffer  <a href="#gad87f95f0faf0c6fdfe94040efcb14860">More...</a><br /></td></tr>
<tr class="separator:gad87f95f0faf0c6fdfe94040efcb14860"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8712cb73a4d6b370658d8bc9a77fba3e"><td class="memItemLeft" align="right" valign="top">const uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#ga8712cb73a4d6b370658d8bc9a77fba3e">otp</a></td></tr>
<tr class="memdesc:ga8712cb73a4d6b370658d8bc9a77fba3e"><td class="mdescLeft">&#160;</td><td class="mdescRight">[in] pointer to one-time-programming data  <a href="#ga8712cb73a4d6b370658d8bc9a77fba3e">More...</a><br /></td></tr>
<tr class="separator:ga8712cb73a4d6b370658d8bc9a77fba3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7276bd20c5842e712da638d25ceb6d92"><td class="memItemLeft" align="right" valign="top">const uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#ga7276bd20c5842e712da638d25ceb6d92">sn</a></td></tr>
<tr class="memdesc:ga7276bd20c5842e712da638d25ceb6d92"><td class="mdescLeft">&#160;</td><td class="mdescRight">[in] pointer to serial number data  <a href="#ga7276bd20c5842e712da638d25ceb6d92">More...</a><br /></td></tr>
<tr class="separator:ga7276bd20c5842e712da638d25ceb6d92"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1a6b6fb557d8d37d59700faf4e4c9167"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#ga1a6b6fb557d8d37d59700faf4e4c9167">mode</a></td></tr>
<tr class="memdesc:ga1a6b6fb557d8d37d59700faf4e4c9167"><td class="mdescLeft">&#160;</td><td class="mdescRight">[in] Mode parameter used in Nonce command (Param1).  <a href="#ga1a6b6fb557d8d37d59700faf4e4c9167">More...</a><br /></td></tr>
<tr class="separator:ga1a6b6fb557d8d37d59700faf4e4c9167"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga876993158b491f4626155b468ffb6edc"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#ga876993158b491f4626155b468ffb6edc">zero</a></td></tr>
<tr class="memdesc:ga876993158b491f4626155b468ffb6edc"><td class="mdescLeft">&#160;</td><td class="mdescRight">[in] Zero parameter used in Nonce command (Param2).  <a href="#ga876993158b491f4626155b468ffb6edc">More...</a><br /></td></tr>
<tr class="separator:ga876993158b491f4626155b468ffb6edc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga02a9d64ea363dc3b231b8cc0b317de8a"><td class="memItemLeft" align="right" valign="top">const uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#ga02a9d64ea363dc3b231b8cc0b317de8a">num_in</a></td></tr>
<tr class="memdesc:ga02a9d64ea363dc3b231b8cc0b317de8a"><td class="mdescLeft">&#160;</td><td class="mdescRight">[in] Pointer to 20-byte NumIn data used in Nonce command.  <a href="#ga02a9d64ea363dc3b231b8cc0b317de8a">More...</a><br /></td></tr>
<tr class="separator:ga02a9d64ea363dc3b231b8cc0b317de8a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga75f7197e2840bcf9fe00722e739fdd9c"><td class="memItemLeft" align="right" valign="top">const uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#ga75f7197e2840bcf9fe00722e739fdd9c">rand_out</a></td></tr>
<tr class="memdesc:ga75f7197e2840bcf9fe00722e739fdd9c"><td class="mdescLeft">&#160;</td><td class="mdescRight">[in] Pointer to 32-byte RandOut data from Nonce command.  <a href="#ga75f7197e2840bcf9fe00722e739fdd9c">More...</a><br /></td></tr>
<tr class="separator:ga75f7197e2840bcf9fe00722e739fdd9c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa17e031da4b22938bed1c21161ba371a"><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="a01149.html">atca_temp_key</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#gaa17e031da4b22938bed1c21161ba371a">temp_key</a></td></tr>
<tr class="memdesc:gaa17e031da4b22938bed1c21161ba371a"><td class="mdescLeft">&#160;</td><td class="mdescRight">[in,out] Pointer to TempKey structure.  <a href="#gaa17e031da4b22938bed1c21161ba371a">More...</a><br /></td></tr>
<tr class="separator:gaa17e031da4b22938bed1c21161ba371a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1a6b6fb557d8d37d59700faf4e4c9167"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#ga1a6b6fb557d8d37d59700faf4e4c9167">mode</a></td></tr>
<tr class="memdesc:ga1a6b6fb557d8d37d59700faf4e4c9167"><td class="mdescLeft">&#160;</td><td class="mdescRight">[in] Mode parameter used in MAC command (Param1).  <a href="#ga1a6b6fb557d8d37d59700faf4e4c9167">More...</a><br /></td></tr>
<tr class="separator:ga1a6b6fb557d8d37d59700faf4e4c9167"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3eedc11953a89e931ede529eb72592ac"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#ga3eedc11953a89e931ede529eb72592ac">key_id</a></td></tr>
<tr class="memdesc:ga3eedc11953a89e931ede529eb72592ac"><td class="mdescLeft">&#160;</td><td class="mdescRight">[in] KeyID parameter used in MAC command (Param2).  <a href="#ga3eedc11953a89e931ede529eb72592ac">More...</a><br /></td></tr>
<tr class="separator:ga3eedc11953a89e931ede529eb72592ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga88d82c85f774fa04ccf768e566fec194"><td class="memItemLeft" align="right" valign="top">const uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#ga88d82c85f774fa04ccf768e566fec194">challenge</a></td></tr>
<tr class="memdesc:ga88d82c85f774fa04ccf768e566fec194"><td class="mdescLeft">&#160;</td><td class="mdescRight">[in] Pointer to 32-byte Challenge data used in MAC command, depending on mode.  <a href="#ga88d82c85f774fa04ccf768e566fec194">More...</a><br /></td></tr>
<tr class="separator:ga88d82c85f774fa04ccf768e566fec194"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab0d96f9d852c2058c2546a1338e87544"><td class="memItemLeft" align="right" valign="top">const uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#gab0d96f9d852c2058c2546a1338e87544">key</a></td></tr>
<tr class="memdesc:gab0d96f9d852c2058c2546a1338e87544"><td class="mdescLeft">&#160;</td><td class="mdescRight">[in] Pointer to 32-byte key used to generate MAC digest.  <a href="#gab0d96f9d852c2058c2546a1338e87544">More...</a><br /></td></tr>
<tr class="separator:gab0d96f9d852c2058c2546a1338e87544"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8712cb73a4d6b370658d8bc9a77fba3e"><td class="memItemLeft" align="right" valign="top">const uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#ga8712cb73a4d6b370658d8bc9a77fba3e">otp</a></td></tr>
<tr class="memdesc:ga8712cb73a4d6b370658d8bc9a77fba3e"><td class="mdescLeft">&#160;</td><td class="mdescRight">[in] Pointer to 11-byte OTP, optionally included in MAC digest, depending on mode.  <a href="#ga8712cb73a4d6b370658d8bc9a77fba3e">More...</a><br /></td></tr>
<tr class="separator:ga8712cb73a4d6b370658d8bc9a77fba3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7276bd20c5842e712da638d25ceb6d92"><td class="memItemLeft" align="right" valign="top">const uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#ga7276bd20c5842e712da638d25ceb6d92">sn</a></td></tr>
<tr class="memdesc:ga7276bd20c5842e712da638d25ceb6d92"><td class="mdescLeft">&#160;</td><td class="mdescRight">[in] Pointer to 9-byte SN, optionally included in MAC digest, depending on mode.  <a href="#ga7276bd20c5842e712da638d25ceb6d92">More...</a><br /></td></tr>
<tr class="separator:ga7276bd20c5842e712da638d25ceb6d92"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8ab7bcb35ce5bba05608c72da6b4a0d3"><td class="memItemLeft" align="right" valign="top">uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#ga8ab7bcb35ce5bba05608c72da6b4a0d3">response</a></td></tr>
<tr class="memdesc:ga8ab7bcb35ce5bba05608c72da6b4a0d3"><td class="mdescLeft">&#160;</td><td class="mdescRight">[out] Pointer to 32-byte SHA-256 digest (MAC).  <a href="#ga8ab7bcb35ce5bba05608c72da6b4a0d3">More...</a><br /></td></tr>
<tr class="separator:ga8ab7bcb35ce5bba05608c72da6b4a0d3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa17e031da4b22938bed1c21161ba371a"><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="a01149.html">atca_temp_key</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#gaa17e031da4b22938bed1c21161ba371a">temp_key</a></td></tr>
<tr class="memdesc:gaa17e031da4b22938bed1c21161ba371a"><td class="mdescLeft">&#160;</td><td class="mdescRight">[in,out] Pointer to TempKey structure.  <a href="#gaa17e031da4b22938bed1c21161ba371a">More...</a><br /></td></tr>
<tr class="separator:gaa17e031da4b22938bed1c21161ba371a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1a6b6fb557d8d37d59700faf4e4c9167"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#ga1a6b6fb557d8d37d59700faf4e4c9167">mode</a></td></tr>
<tr class="memdesc:ga1a6b6fb557d8d37d59700faf4e4c9167"><td class="mdescLeft">&#160;</td><td class="mdescRight">[in] Mode parameter used in HMAC command (Param1).  <a href="#ga1a6b6fb557d8d37d59700faf4e4c9167">More...</a><br /></td></tr>
<tr class="separator:ga1a6b6fb557d8d37d59700faf4e4c9167"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3eedc11953a89e931ede529eb72592ac"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#ga3eedc11953a89e931ede529eb72592ac">key_id</a></td></tr>
<tr class="memdesc:ga3eedc11953a89e931ede529eb72592ac"><td class="mdescLeft">&#160;</td><td class="mdescRight">[in] KeyID parameter used in HMAC command (Param2).  <a href="#ga3eedc11953a89e931ede529eb72592ac">More...</a><br /></td></tr>
<tr class="separator:ga3eedc11953a89e931ede529eb72592ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab0d96f9d852c2058c2546a1338e87544"><td class="memItemLeft" align="right" valign="top">const uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#gab0d96f9d852c2058c2546a1338e87544">key</a></td></tr>
<tr class="memdesc:gab0d96f9d852c2058c2546a1338e87544"><td class="mdescLeft">&#160;</td><td class="mdescRight">[in] Pointer to 32-byte key used to generate HMAC digest.  <a href="#gab0d96f9d852c2058c2546a1338e87544">More...</a><br /></td></tr>
<tr class="separator:gab0d96f9d852c2058c2546a1338e87544"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8712cb73a4d6b370658d8bc9a77fba3e"><td class="memItemLeft" align="right" valign="top">const uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#ga8712cb73a4d6b370658d8bc9a77fba3e">otp</a></td></tr>
<tr class="memdesc:ga8712cb73a4d6b370658d8bc9a77fba3e"><td class="mdescLeft">&#160;</td><td class="mdescRight">[in] Pointer to 11-byte OTP, optionally included in HMAC digest, depending on mode.  <a href="#ga8712cb73a4d6b370658d8bc9a77fba3e">More...</a><br /></td></tr>
<tr class="separator:ga8712cb73a4d6b370658d8bc9a77fba3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7276bd20c5842e712da638d25ceb6d92"><td class="memItemLeft" align="right" valign="top">const uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#ga7276bd20c5842e712da638d25ceb6d92">sn</a></td></tr>
<tr class="memdesc:ga7276bd20c5842e712da638d25ceb6d92"><td class="mdescLeft">&#160;</td><td class="mdescRight">[in] Pointer to 9-byte SN, optionally included in HMAC digest, depending on mode.  <a href="#ga7276bd20c5842e712da638d25ceb6d92">More...</a><br /></td></tr>
<tr class="separator:ga7276bd20c5842e712da638d25ceb6d92"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8ab7bcb35ce5bba05608c72da6b4a0d3"><td class="memItemLeft" align="right" valign="top">uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#ga8ab7bcb35ce5bba05608c72da6b4a0d3">response</a></td></tr>
<tr class="memdesc:ga8ab7bcb35ce5bba05608c72da6b4a0d3"><td class="mdescLeft">&#160;</td><td class="mdescRight">[out] Pointer to 32-byte SHA-256 HMAC digest.  <a href="#ga8ab7bcb35ce5bba05608c72da6b4a0d3">More...</a><br /></td></tr>
<tr class="separator:ga8ab7bcb35ce5bba05608c72da6b4a0d3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa17e031da4b22938bed1c21161ba371a"><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="a01149.html">atca_temp_key</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#gaa17e031da4b22938bed1c21161ba371a">temp_key</a></td></tr>
<tr class="memdesc:gaa17e031da4b22938bed1c21161ba371a"><td class="mdescLeft">&#160;</td><td class="mdescRight">[in,out] Pointer to TempKey structure.  <a href="#gaa17e031da4b22938bed1c21161ba371a">More...</a><br /></td></tr>
<tr class="separator:gaa17e031da4b22938bed1c21161ba371a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4155a23e70d1bf07de5d316efebeaee7"><td class="memItemLeft" align="right" valign="top">uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#ga4155a23e70d1bf07de5d316efebeaee7">crypto_data</a></td></tr>
<tr class="memdesc:ga4155a23e70d1bf07de5d316efebeaee7"><td class="mdescLeft">&#160;</td><td class="mdescRight">[in,out] Pointer to 32-byte data. Input encrypted data from Read command (Contents field), output decrypted.  <a href="#ga4155a23e70d1bf07de5d316efebeaee7">More...</a><br /></td></tr>
<tr class="separator:ga4155a23e70d1bf07de5d316efebeaee7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa17e031da4b22938bed1c21161ba371a"><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="a01149.html">atca_temp_key</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#gaa17e031da4b22938bed1c21161ba371a">temp_key</a></td></tr>
<tr class="memdesc:gaa17e031da4b22938bed1c21161ba371a"><td class="mdescLeft">&#160;</td><td class="mdescRight">[in,out] Pointer to TempKey structure.  <a href="#gaa17e031da4b22938bed1c21161ba371a">More...</a><br /></td></tr>
<tr class="separator:gaa17e031da4b22938bed1c21161ba371a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9be4eee4ac6c9248a824d093f165839e"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#ga9be4eee4ac6c9248a824d093f165839e">curve_type</a></td></tr>
<tr class="memdesc:ga9be4eee4ac6c9248a824d093f165839e"><td class="mdescLeft">&#160;</td><td class="mdescRight">[in] Curve type used in Verify command (Param2).  <a href="#ga9be4eee4ac6c9248a824d093f165839e">More...</a><br /></td></tr>
<tr class="separator:ga9be4eee4ac6c9248a824d093f165839e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac97246a9059d3f687edfcbe5abfc5d8f"><td class="memItemLeft" align="right" valign="top">const uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#gac97246a9059d3f687edfcbe5abfc5d8f">signature</a></td></tr>
<tr class="memdesc:gac97246a9059d3f687edfcbe5abfc5d8f"><td class="mdescLeft">&#160;</td><td class="mdescRight">[in] Pointer to ECDSA signature to be verified  <a href="#gac97246a9059d3f687edfcbe5abfc5d8f">More...</a><br /></td></tr>
<tr class="separator:gac97246a9059d3f687edfcbe5abfc5d8f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gacea547aa606ca17f8da337a1b58972a1"><td class="memItemLeft" align="right" valign="top">const uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#gacea547aa606ca17f8da337a1b58972a1">public_key</a></td></tr>
<tr class="memdesc:gacea547aa606ca17f8da337a1b58972a1"><td class="mdescLeft">&#160;</td><td class="mdescRight">[in] Pointer to the public key to be used for verification  <a href="#gacea547aa606ca17f8da337a1b58972a1">More...</a><br /></td></tr>
<tr class="separator:gacea547aa606ca17f8da337a1b58972a1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa17e031da4b22938bed1c21161ba371a"><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="a01149.html">atca_temp_key</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#gaa17e031da4b22938bed1c21161ba371a">temp_key</a></td></tr>
<tr class="memdesc:gaa17e031da4b22938bed1c21161ba371a"><td class="mdescLeft">&#160;</td><td class="mdescRight">[in,out] Pointer to TempKey structure.  <a href="#gaa17e031da4b22938bed1c21161ba371a">More...</a><br /></td></tr>
<tr class="separator:gaa17e031da4b22938bed1c21161ba371a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
Definitions for ATECC Message Sizes to Calculate a SHA256 Hash</h2></td></tr>
<tr><td class="ititle" colspan="2"><p><a class="anchor" id="amgrp331b5419181783ade61a811be712acc4"></a>"||" is the concatenation operator. The number in braces is the length of the hash input value in bytes. </p>
</td></tr>
<tr class="memitem:gaebdc2d83274268bb48fc45e87aef38af"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#gaebdc2d83274268bb48fc45e87aef38af">ATCA_MSG_SIZE_NONCE</a>&#160;&#160;&#160;(55)</td></tr>
<tr class="memdesc:gaebdc2d83274268bb48fc45e87aef38af"><td class="mdescLeft">&#160;</td><td class="mdescRight">RandOut{32} || NumIn{20} || OpCode{1} || Mode{1} || LSB of Param2{1}.  <a href="#gaebdc2d83274268bb48fc45e87aef38af">More...</a><br /></td></tr>
<tr class="separator:gaebdc2d83274268bb48fc45e87aef38af"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2b5993f5b7254d8c6e50794824cf47b6"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#ga2b5993f5b7254d8c6e50794824cf47b6">ATCA_MSG_SIZE_MAC</a>&#160;&#160;&#160;(88)</td></tr>
<tr class="memdesc:ga2b5993f5b7254d8c6e50794824cf47b6"><td class="mdescLeft">&#160;</td><td class="mdescRight">(Key or TempKey){32} || (Challenge or TempKey){32} || OpCode{1} || Mode{1} || Param2{2} || (OTP0_7 or 0){8} || (OTP8_10 or 0){3} || SN8{1} || (SN4_7 or 0){4} || SN0_1{2} || (SN2_3 or 0){2}  <a href="#ga2b5993f5b7254d8c6e50794824cf47b6">More...</a><br /></td></tr>
<tr class="separator:ga2b5993f5b7254d8c6e50794824cf47b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae9245f524128f65f77f65002a5a7265f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#gae9245f524128f65f77f65002a5a7265f">ATCA_MSG_SIZE_HMAC</a>&#160;&#160;&#160;(88)</td></tr>
<tr class="separator:gae9245f524128f65f77f65002a5a7265f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga656372cab66beeb5a333e9a33e342017"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#ga656372cab66beeb5a333e9a33e342017">ATCA_MSG_SIZE_GEN_DIG</a>&#160;&#160;&#160;(96)</td></tr>
<tr class="memdesc:ga656372cab66beeb5a333e9a33e342017"><td class="mdescLeft">&#160;</td><td class="mdescRight">KeyId{32} || OpCode{1} || Param1{1} || Param2{2} || SN8{1} || SN0_1{2} || 0{25} || TempKey{32}.  <a href="#ga656372cab66beeb5a333e9a33e342017">More...</a><br /></td></tr>
<tr class="separator:ga656372cab66beeb5a333e9a33e342017"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1f445a11e4da099fec31efd43eadc234"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#ga1f445a11e4da099fec31efd43eadc234">ATCA_MSG_SIZE_DERIVE_KEY</a>&#160;&#160;&#160;(96)</td></tr>
<tr class="memdesc:ga1f445a11e4da099fec31efd43eadc234"><td class="mdescLeft">&#160;</td><td class="mdescRight">KeyId{32} || OpCode{1} || Param1{1} || Param2{2} || SN8{1} || SN0_1{2} || 0{25} || TempKey{32}.  <a href="#ga1f445a11e4da099fec31efd43eadc234">More...</a><br /></td></tr>
<tr class="separator:ga1f445a11e4da099fec31efd43eadc234"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4ef7d31c60616cf5177f415e32607d10"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#ga4ef7d31c60616cf5177f415e32607d10">ATCA_MSG_SIZE_DERIVE_KEY_MAC</a>&#160;&#160;&#160;(39)</td></tr>
<tr class="memdesc:ga4ef7d31c60616cf5177f415e32607d10"><td class="mdescLeft">&#160;</td><td class="mdescRight">KeyId{32} || OpCode{1} || Param1{1} || Param2{2} || SN8{1} || SN0_1{2}.  <a href="#ga4ef7d31c60616cf5177f415e32607d10">More...</a><br /></td></tr>
<tr class="separator:ga4ef7d31c60616cf5177f415e32607d10"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gafd8064c07a5f22cdb087c88e1b87c1be"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#gafd8064c07a5f22cdb087c88e1b87c1be">ATCA_MSG_SIZE_ENCRYPT_MAC</a>&#160;&#160;&#160;(96)</td></tr>
<tr class="memdesc:gafd8064c07a5f22cdb087c88e1b87c1be"><td class="mdescLeft">&#160;</td><td class="mdescRight">KeyId{32} || OpCode{1} || Param1{1} || Param2{2}|| SN8{1} || SN0_1{2} || 0{25} || TempKey{32}.  <a href="#gafd8064c07a5f22cdb087c88e1b87c1be">More...</a><br /></td></tr>
<tr class="separator:gafd8064c07a5f22cdb087c88e1b87c1be"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1039bfbe7e13d614814341bdee6afa7b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#ga1039bfbe7e13d614814341bdee6afa7b">ATCA_MSG_SIZE_PRIVWRITE_MAC</a>&#160;&#160;&#160;(96)</td></tr>
<tr class="memdesc:ga1039bfbe7e13d614814341bdee6afa7b"><td class="mdescLeft">&#160;</td><td class="mdescRight">KeyId{32} || OpCode{1} || Param1{1} || Param2{2}|| SN8{1} || SN0_1{2} || 0{21} || PlainText{36}.  <a href="#ga1039bfbe7e13d614814341bdee6afa7b">More...</a><br /></td></tr>
<tr class="separator:ga1039bfbe7e13d614814341bdee6afa7b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab51341e9f564bc8f85c2e822835a8bcb"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#gab51341e9f564bc8f85c2e822835a8bcb">ATCA_COMMAND_HEADER_SIZE</a>&#160;&#160;&#160;( 4)</td></tr>
<tr class="separator:gab51341e9f564bc8f85c2e822835a8bcb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5398e83ccfca8ada7cb609c1e34d2cc4"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#ga5398e83ccfca8ada7cb609c1e34d2cc4">ATCA_GENDIG_ZEROS_SIZE</a>&#160;&#160;&#160;(25)</td></tr>
<tr class="separator:ga5398e83ccfca8ada7cb609c1e34d2cc4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga43496218f8a98faad996489af047272f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#ga43496218f8a98faad996489af047272f">ATCA_WRITE_MAC_ZEROS_SIZE</a>&#160;&#160;&#160;(25)</td></tr>
<tr class="separator:ga43496218f8a98faad996489af047272f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9c24dfde4798589fd98c2583d170aeb1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#ga9c24dfde4798589fd98c2583d170aeb1">ATCA_PRIVWRITE_MAC_ZEROS_SIZE</a>&#160;&#160;&#160;(21)</td></tr>
<tr class="separator:ga9c24dfde4798589fd98c2583d170aeb1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6a06f47cbc2023edba7e8b0f2f4b08bb"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#ga6a06f47cbc2023edba7e8b0f2f4b08bb">ATCA_PRIVWRITE_PLAIN_TEXT_SIZE</a>&#160;&#160;&#160;(36)</td></tr>
<tr class="separator:ga6a06f47cbc2023edba7e8b0f2f4b08bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7204dddd2ff69a1139a6a8d8f6c62c9c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#ga7204dddd2ff69a1139a6a8d8f6c62c9c">ATCA_DERIVE_KEY_ZEROS_SIZE</a>&#160;&#160;&#160;(25)</td></tr>
<tr class="separator:ga7204dddd2ff69a1139a6a8d8f6c62c9c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf7ec8e72430c612cc936a2ea2f91d6d0"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#gaf7ec8e72430c612cc936a2ea2f91d6d0">HMAC_BLOCK_SIZE</a>&#160;&#160;&#160;(64)</td></tr>
<tr class="separator:gaf7ec8e72430c612cc936a2ea2f91d6d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaeb6c1ee0fb04b12d185eee8bb766068c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#gaeb6c1ee0fb04b12d185eee8bb766068c">ENCRYPTION_KEY_SIZE</a>&#160;&#160;&#160;(64)</td></tr>
<tr class="separator:gaeb6c1ee0fb04b12d185eee8bb766068c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
Default Fixed Byte Values of Serial Number (SN[0:1] and SN[8])</h2></td></tr>
<tr class="memitem:ga1a026ad1d6e4ccd5c32f7f0462877b39"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#ga1a026ad1d6e4ccd5c32f7f0462877b39">ATCA_SN_0_DEF</a>&#160;&#160;&#160;(0x01)</td></tr>
<tr class="separator:ga1a026ad1d6e4ccd5c32f7f0462877b39"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5e4f22a404b71cabba4fd7085dff5e7c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#ga5e4f22a404b71cabba4fd7085dff5e7c">ATCA_SN_1_DEF</a>&#160;&#160;&#160;(0x23)</td></tr>
<tr class="separator:ga5e4f22a404b71cabba4fd7085dff5e7c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga232f0d699ece83f51d63e5a66d254be5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#ga232f0d699ece83f51d63e5a66d254be5">ATCA_SN_8_DEF</a>&#160;&#160;&#160;(0xEE)</td></tr>
<tr class="separator:ga232f0d699ece83f51d63e5a66d254be5"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
Definition for TempKey Mode</h2></td></tr>
<tr class="memitem:ga05323075c94849bf70e84f5a5931f058"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00994.html#ga05323075c94849bf70e84f5a5931f058">MAC_MODE_USE_TEMPKEY_MASK</a>&#160;&#160;&#160;((uint8_t)0x03)</td></tr>
<tr class="memdesc:ga05323075c94849bf70e84f5a5931f058"><td class="mdescLeft">&#160;</td><td class="mdescRight">mode mask for MAC command when using TempKey  <a href="#ga05323075c94849bf70e84f5a5931f058">More...</a><br /></td></tr>
<tr class="separator:ga05323075c94849bf70e84f5a5931f058"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<p>Use these functions if your system does not use an ATCADevice as a host but implements the host in firmware. The functions provide host-side cryptographic functionality for an ATECC client device. They are intended to accompany the CryptoAuthLib functions. They can be called directly from an application, or integrated into an API. </p>
<p>Modern compilers can garbage-collect unused functions. If your compiler does not support this feature, you can just discard this module from your project if you do use an ATECC as a host. Or, if you don't, delete the functions you do not use. </p>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a id="gab51341e9f564bc8f85c2e822835a8bcb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gab51341e9f564bc8f85c2e822835a8bcb">&#9670;&nbsp;</a></span>ATCA_COMMAND_HEADER_SIZE</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ATCA_COMMAND_HEADER_SIZE&#160;&#160;&#160;( 4)</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="ga7204dddd2ff69a1139a6a8d8f6c62c9c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga7204dddd2ff69a1139a6a8d8f6c62c9c">&#9670;&nbsp;</a></span>ATCA_DERIVE_KEY_ZEROS_SIZE</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ATCA_DERIVE_KEY_ZEROS_SIZE&#160;&#160;&#160;(25)</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="ga5398e83ccfca8ada7cb609c1e34d2cc4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga5398e83ccfca8ada7cb609c1e34d2cc4">&#9670;&nbsp;</a></span>ATCA_GENDIG_ZEROS_SIZE</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ATCA_GENDIG_ZEROS_SIZE&#160;&#160;&#160;(25)</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="ga1f445a11e4da099fec31efd43eadc234"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga1f445a11e4da099fec31efd43eadc234">&#9670;&nbsp;</a></span>ATCA_MSG_SIZE_DERIVE_KEY</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ATCA_MSG_SIZE_DERIVE_KEY&#160;&#160;&#160;(96)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>KeyId{32} || OpCode{1} || Param1{1} || Param2{2} || SN8{1} || SN0_1{2} || 0{25} || TempKey{32}. </p>

</div>
</div>
<a id="ga4ef7d31c60616cf5177f415e32607d10"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga4ef7d31c60616cf5177f415e32607d10">&#9670;&nbsp;</a></span>ATCA_MSG_SIZE_DERIVE_KEY_MAC</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ATCA_MSG_SIZE_DERIVE_KEY_MAC&#160;&#160;&#160;(39)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>KeyId{32} || OpCode{1} || Param1{1} || Param2{2} || SN8{1} || SN0_1{2}. </p>

</div>
</div>
<a id="gafd8064c07a5f22cdb087c88e1b87c1be"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gafd8064c07a5f22cdb087c88e1b87c1be">&#9670;&nbsp;</a></span>ATCA_MSG_SIZE_ENCRYPT_MAC</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ATCA_MSG_SIZE_ENCRYPT_MAC&#160;&#160;&#160;(96)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>KeyId{32} || OpCode{1} || Param1{1} || Param2{2}|| SN8{1} || SN0_1{2} || 0{25} || TempKey{32}. </p>

</div>
</div>
<a id="ga656372cab66beeb5a333e9a33e342017"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga656372cab66beeb5a333e9a33e342017">&#9670;&nbsp;</a></span>ATCA_MSG_SIZE_GEN_DIG</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ATCA_MSG_SIZE_GEN_DIG&#160;&#160;&#160;(96)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>KeyId{32} || OpCode{1} || Param1{1} || Param2{2} || SN8{1} || SN0_1{2} || 0{25} || TempKey{32}. </p>

</div>
</div>
<a id="gae9245f524128f65f77f65002a5a7265f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gae9245f524128f65f77f65002a5a7265f">&#9670;&nbsp;</a></span>ATCA_MSG_SIZE_HMAC</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ATCA_MSG_SIZE_HMAC&#160;&#160;&#160;(88)</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="ga2b5993f5b7254d8c6e50794824cf47b6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga2b5993f5b7254d8c6e50794824cf47b6">&#9670;&nbsp;</a></span>ATCA_MSG_SIZE_MAC</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ATCA_MSG_SIZE_MAC&#160;&#160;&#160;(88)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>(Key or TempKey){32} || (Challenge or TempKey){32} || OpCode{1} || Mode{1} || Param2{2} || (OTP0_7 or 0){8} || (OTP8_10 or 0){3} || SN8{1} || (SN4_7 or 0){4} || SN0_1{2} || (SN2_3 or 0){2} </p>

</div>
</div>
<a id="gaebdc2d83274268bb48fc45e87aef38af"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaebdc2d83274268bb48fc45e87aef38af">&#9670;&nbsp;</a></span>ATCA_MSG_SIZE_NONCE</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ATCA_MSG_SIZE_NONCE&#160;&#160;&#160;(55)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>RandOut{32} || NumIn{20} || OpCode{1} || Mode{1} || LSB of Param2{1}. </p>

</div>
</div>
<a id="ga1039bfbe7e13d614814341bdee6afa7b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga1039bfbe7e13d614814341bdee6afa7b">&#9670;&nbsp;</a></span>ATCA_MSG_SIZE_PRIVWRITE_MAC</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ATCA_MSG_SIZE_PRIVWRITE_MAC&#160;&#160;&#160;(96)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>KeyId{32} || OpCode{1} || Param1{1} || Param2{2}|| SN8{1} || SN0_1{2} || 0{21} || PlainText{36}. </p>

</div>
</div>
<a id="ga9c24dfde4798589fd98c2583d170aeb1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga9c24dfde4798589fd98c2583d170aeb1">&#9670;&nbsp;</a></span>ATCA_PRIVWRITE_MAC_ZEROS_SIZE</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ATCA_PRIVWRITE_MAC_ZEROS_SIZE&#160;&#160;&#160;(21)</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="ga6a06f47cbc2023edba7e8b0f2f4b08bb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga6a06f47cbc2023edba7e8b0f2f4b08bb">&#9670;&nbsp;</a></span>ATCA_PRIVWRITE_PLAIN_TEXT_SIZE</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ATCA_PRIVWRITE_PLAIN_TEXT_SIZE&#160;&#160;&#160;(36)</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="ga1a026ad1d6e4ccd5c32f7f0462877b39"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga1a026ad1d6e4ccd5c32f7f0462877b39">&#9670;&nbsp;</a></span>ATCA_SN_0_DEF</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ATCA_SN_0_DEF&#160;&#160;&#160;(0x01)</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="ga5e4f22a404b71cabba4fd7085dff5e7c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga5e4f22a404b71cabba4fd7085dff5e7c">&#9670;&nbsp;</a></span>ATCA_SN_1_DEF</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ATCA_SN_1_DEF&#160;&#160;&#160;(0x23)</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="ga232f0d699ece83f51d63e5a66d254be5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga232f0d699ece83f51d63e5a66d254be5">&#9670;&nbsp;</a></span>ATCA_SN_8_DEF</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ATCA_SN_8_DEF&#160;&#160;&#160;(0xEE)</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="ga43496218f8a98faad996489af047272f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga43496218f8a98faad996489af047272f">&#9670;&nbsp;</a></span>ATCA_WRITE_MAC_ZEROS_SIZE</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ATCA_WRITE_MAC_ZEROS_SIZE&#160;&#160;&#160;(25)</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="gaeb6c1ee0fb04b12d185eee8bb766068c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaeb6c1ee0fb04b12d185eee8bb766068c">&#9670;&nbsp;</a></span>ENCRYPTION_KEY_SIZE</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ENCRYPTION_KEY_SIZE&#160;&#160;&#160;(64)</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="gaf7ec8e72430c612cc936a2ea2f91d6d0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaf7ec8e72430c612cc936a2ea2f91d6d0">&#9670;&nbsp;</a></span>HMAC_BLOCK_SIZE</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define HMAC_BLOCK_SIZE&#160;&#160;&#160;(64)</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="ga05323075c94849bf70e84f5a5931f058"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga05323075c94849bf70e84f5a5931f058">&#9670;&nbsp;</a></span>MAC_MODE_USE_TEMPKEY_MASK</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MAC_MODE_USE_TEMPKEY_MASK&#160;&#160;&#160;((uint8_t)0x03)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>mode mask for MAC command when using TempKey </p>

</div>
</div>
<h2 class="groupheader">Typedef Documentation</h2>
<a id="ga897821490d4d10e168f1c94cd67966e7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga897821490d4d10e168f1c94cd67966e7">&#9670;&nbsp;</a></span>atca_check_mac_in_out_t</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct <a class="el" href="a01205.html">atca_check_mac_in_out</a>  <a class="el" href="a00994.html#ga897821490d4d10e168f1c94cd67966e7">atca_check_mac_in_out_t</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Input/output parameters for function <a class="el" href="a00994.html#ga5b457cd0ccba73864eee4030b6079ba7" title="This function performs the checkmac operation to generate client response on the host side .">atcah_check_mac()</a>. </p>

</div>
</div>
<a id="ga5ed81b300bd0d04f88708ad122d3a53a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga5ed81b300bd0d04f88708ad122d3a53a">&#9670;&nbsp;</a></span>atca_gen_dig_in_out_t</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct <a class="el" href="a01185.html">atca_gen_dig_in_out</a>  <a class="el" href="a00994.html#ga5ed81b300bd0d04f88708ad122d3a53a">atca_gen_dig_in_out_t</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Input/output parameters for function <a class="el" href="a00994.html#ga6f6043ba8eebbaab6e6f3b4fa5e31ad4" title="This function combines the current TempKey with a stored value.">atcah_gen_dig()</a>. </p>

</div>
</div>
<a id="ga804b097bbb0a7086f7d208390689146b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga804b097bbb0a7086f7d208390689146b">&#9670;&nbsp;</a></span>atca_gen_key_in_out_t</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct <a class="el" href="a01213.html">atca_gen_key_in_out</a>  <a class="el" href="a00994.html#ga804b097bbb0a7086f7d208390689146b">atca_gen_key_in_out_t</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Input/output parameters for calculating the PubKey digest put into TempKey by the GenKey command with the <a class="el" href="a00994.html#gabf2abd4bd62f47537756c9ab109050c0" title="Calculate the PubKey digest created by GenKey and saved to TempKey.">atcah_gen_key_msg()</a> function. </p>

</div>
</div>
<a id="ga787a3ef3bd9a6feaf71b50fc127b619d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga787a3ef3bd9a6feaf71b50fc127b619d">&#9670;&nbsp;</a></span>atca_io_decrypt_in_out_t</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct <a class="el" href="a01161.html">atca_io_decrypt_in_out</a>  <a class="el" href="a00994.html#ga787a3ef3bd9a6feaf71b50fc127b619d">atca_io_decrypt_in_out_t</a></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="ga21e3f5ec2d0765d3e98432c4e8498350"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga21e3f5ec2d0765d3e98432c4e8498350">&#9670;&nbsp;</a></span>atca_mac_in_out_t</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct <a class="el" href="a01177.html">atca_mac_in_out</a>  <a class="el" href="a00994.html#ga21e3f5ec2d0765d3e98432c4e8498350">atca_mac_in_out_t</a></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="gae9d8a27e97696e2e02cea680ea44e3f2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gae9d8a27e97696e2e02cea680ea44e3f2">&#9670;&nbsp;</a></span>atca_nonce_in_out_t</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct <a class="el" href="a01157.html">atca_nonce_in_out</a>  <a class="el" href="a00994.html#gae9d8a27e97696e2e02cea680ea44e3f2">atca_nonce_in_out_t</a></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="gaa60674423eaa2e7f37f2c1cf2855f2d7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaa60674423eaa2e7f37f2c1cf2855f2d7">&#9670;&nbsp;</a></span>atca_secureboot_enc_in_out_t</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct <a class="el" href="a01169.html">atca_secureboot_enc_in_out</a>  <a class="el" href="a00994.html#gaa60674423eaa2e7f37f2c1cf2855f2d7">atca_secureboot_enc_in_out_t</a></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="gace9a9d1e2e34d294e573098600b6f061"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gace9a9d1e2e34d294e573098600b6f061">&#9670;&nbsp;</a></span>atca_secureboot_mac_in_out_t</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct <a class="el" href="a01173.html">atca_secureboot_mac_in_out</a>  <a class="el" href="a00994.html#gace9a9d1e2e34d294e573098600b6f061">atca_secureboot_mac_in_out_t</a></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="gafdb82fc57fb953626c28c757a5220274"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gafdb82fc57fb953626c28c757a5220274">&#9670;&nbsp;</a></span>atca_sign_internal_in_out_t</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct <a class="el" href="a01217.html">atca_sign_internal_in_out</a>  <a class="el" href="a00994.html#gafdb82fc57fb953626c28c757a5220274">atca_sign_internal_in_out_t</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Input/output parameters for calculating the message and digest used by the Sign(internal) command. Used with the <a class="el" href="a00994.html#ga680045caed6e8f6e136e1a2dc3fe1c9e" title="Builds the full message that would be signed by the Sign(Internal) command.">atcah_sign_internal_msg()</a> function. </p>

</div>
</div>
<a id="ga30bc02410edabefa2e210709b00105de"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga30bc02410edabefa2e210709b00105de">&#9670;&nbsp;</a></span>atca_temp_key_t</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct <a class="el" href="a01149.html">atca_temp_key</a>  <a class="el" href="a00994.html#ga30bc02410edabefa2e210709b00105de">atca_temp_key_t</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Structure to hold TempKey fields. </p>

</div>
</div>
<a id="gab4d485e0545aa3defd75702fe51f9a13"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gab4d485e0545aa3defd75702fe51f9a13">&#9670;&nbsp;</a></span>atca_verify_in_out_t</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct <a class="el" href="a01209.html">atca_verify_in_out</a>  <a class="el" href="a00994.html#gab4d485e0545aa3defd75702fe51f9a13">atca_verify_in_out_t</a></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="ga39d794a93edb13943760550086940fa4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga39d794a93edb13943760550086940fa4">&#9670;&nbsp;</a></span>atca_verify_mac_in_out_t</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct <a class="el" href="a01165.html">atca_verify_mac</a>  <a class="el" href="a00994.html#ga39d794a93edb13943760550086940fa4">atca_verify_mac_in_out_t</a></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="gafeefb2141ebb14988f08eb86f7cd6608"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gafeefb2141ebb14988f08eb86f7cd6608">&#9670;&nbsp;</a></span>atca_write_mac_in_out_t</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct <a class="el" href="a01189.html">atca_write_mac_in_out</a>  <a class="el" href="a00994.html#gafeefb2141ebb14988f08eb86f7cd6608">atca_write_mac_in_out_t</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Input/output parameters for function <a class="el" href="a00994.html#ga47853951c57803eff1432780bf360057" title="This function calculates the input MAC for the Write command.">atcah_write_auth_mac()</a> and <a class="el" href="a00994.html#gaed8aa58875c6bdf46a937313e69c6ebb" title="This function calculates the input MAC for the PrivWrite command.">atcah_privwrite_auth_mac()</a>. </p>

</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a id="ga5b457cd0ccba73864eee4030b6079ba7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga5b457cd0ccba73864eee4030b6079ba7">&#9670;&nbsp;</a></span>atcah_check_mac()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a00173.html#a22bd6643f31f1d75dc3e7ea939f468cd">ATCA_STATUS</a> atcah_check_mac </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="a01205.html">atca_check_mac_in_out</a> *&#160;</td>
          <td class="paramname"><em>param</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function performs the checkmac operation to generate client response on the host side . </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">param</td><td>Input and output parameters </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCA_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="ga316e7eeaeedc7a30824294280488e24e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga316e7eeaeedc7a30824294280488e24e">&#9670;&nbsp;</a></span>atcah_config_to_sign_internal()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a00173.html#a22bd6643f31f1d75dc3e7ea939f468cd">ATCA_STATUS</a> atcah_config_to_sign_internal </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00988.html#gafb234ccd6a80d09c0efbe336c2354267">ATCADeviceType</a>&#160;</td>
          <td class="paramname"><em>device_type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="a01217.html">atca_sign_internal_in_out</a> *&#160;</td>
          <td class="paramname"><em>param</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint8_t *&#160;</td>
          <td class="paramname"><em>config</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Populate the slot_config, key_config, and is_slot_locked fields in the <a class="el" href="a01217.html" title="Input/output parameters for calculating the message and digest used by the Sign(internal) command....">atca_sign_internal_in_out</a> structure from the provided config zone. </p>
<p>The <a class="el" href="a01217.html" title="Input/output parameters for calculating the message and digest used by the Sign(internal) command....">atca_sign_internal_in_out</a> structure has a number of fields (slot_config, key_config, is_slot_locked) that can be determined automatically from the current state of TempKey and the full config zone.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">param</td><td>Sign(Internal) parameters to be filled out. Only slot_config, key_config, and is_slot_locked will be set. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">device_type</td><td>The type of the device. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">config</td><td>Full 128 byte config zone for the device. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCA_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="ga89408b8338dd9f43c4ba85b2a082c3ae"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga89408b8338dd9f43c4ba85b2a082c3ae">&#9670;&nbsp;</a></span>atcah_decrypt()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a00173.html#a22bd6643f31f1d75dc3e7ea939f468cd">ATCA_STATUS</a> atcah_decrypt </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="a01201.html">atca_decrypt_in_out</a> *&#160;</td>
          <td class="paramname"><em>param</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function decrypts 32-byte encrypted data received with the Read command. </p>
<p>To use this function, first the nonce must be valid and synchronized between device and application. The application sends a GenDig command to the Device, using a key specified by SlotConfig.ReadKey. The device updates its TempKey. The application then updates its own TempKey using the GenDig calculation function, using the same key. The application sends a Read command to the device for a user zone configured with EncryptRead. The device encrypts 32-byte zone content, and outputs it to the host. The application passes these encrypted data to this decryption function. The function decrypts the data and returns them. TempKey must be updated by GenDig using a ParentKey as specified by SlotConfig.ReadKey before executing this function. The decryption function does not check whether the TempKey has been generated by a correct ParentKey for the corresponding zone. Therefore to get a correct result, the application has to make sure that prior GenDig calculation was done using correct ParentKey.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">param</td><td>pointer to parameter structure </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCA_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="ga02b3479eaee1bd1741675c2a1249ffda"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga02b3479eaee1bd1741675c2a1249ffda">&#9670;&nbsp;</a></span>atcah_derive_key()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a00173.html#a22bd6643f31f1d75dc3e7ea939f468cd">ATCA_STATUS</a> atcah_derive_key </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="a01193.html">atca_derive_key_in_out</a> *&#160;</td>
          <td class="paramname"><em>param</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function derives a key with a key and TempKey. </p>
<p>Used in conjunction with DeriveKey command, the key derived by this function will match the key in the device. Two kinds of operation are supported: </p><ul>
<li>
Roll Key operation: target_key and parent_key parameters should be set to point to the same location (TargetKey). </li>
<li>
Create Key operation: target_key should be set to point to TargetKey, parent_key should be set to point to ParentKey. </li>
</ul>
<p>After executing this function, the initial value of target_key will be overwritten with the derived key. The TempKey should be valid (temp_key.valid = 1) before executing this function.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">param</td><td>pointer to parameter structure </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCA_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="ga60fc543b3df6fa1dedfbf59e5bde554b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga60fc543b3df6fa1dedfbf59e5bde554b">&#9670;&nbsp;</a></span>atcah_derive_key_mac()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a00173.html#a22bd6643f31f1d75dc3e7ea939f468cd">ATCA_STATUS</a> atcah_derive_key_mac </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="a01197.html">atca_derive_key_mac_in_out</a> *&#160;</td>
          <td class="paramname"><em>param</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function calculates the input MAC for a DeriveKey command. </p>
<p>The DeriveKey command will need an input MAC if SlotConfig[TargetKey].Bit15 is set.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">param</td><td>pointer to parameter structure </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCA_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="ga809ad14c1d8da45d5f74fa4c55373638"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga809ad14c1d8da45d5f74fa4c55373638">&#9670;&nbsp;</a></span>atcah_encode_counter_match()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a00173.html#a22bd6643f31f1d75dc3e7ea939f468cd">ATCA_STATUS</a> atcah_encode_counter_match </td>
          <td>(</td>
          <td class="paramtype">uint32_t&#160;</td>
          <td class="paramname"><em>counter_value</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t *&#160;</td>
          <td class="paramname"><em>counter_match_value</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Builds the counter match value that needs to be stored in a slot. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">counter_value</td><td>Counter value to be used for the counter match. This must be a multiple of 32. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">counter_match_value</td><td>Data to be stored in the beginning of a counter match slot will be returned here (8 bytes).</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCA_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="ga6f6043ba8eebbaab6e6f3b4fa5e31ad4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga6f6043ba8eebbaab6e6f3b4fa5e31ad4">&#9670;&nbsp;</a></span>atcah_gen_dig()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a00173.html#a22bd6643f31f1d75dc3e7ea939f468cd">ATCA_STATUS</a> atcah_gen_dig </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="a01185.html">atca_gen_dig_in_out</a> *&#160;</td>
          <td class="paramname"><em>param</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function combines the current TempKey with a stored value. </p>
<p>The stored value can be a data slot, OTP page, configuration zone, or hardware transport key. The TempKey generated by this function will match with the TempKey in the device generated when executing a GenDig command. The TempKey should be valid (temp_key.valid = 1) before executing this function. To use this function, an application first sends a GenDig command with a chosen stored value to the device. This stored value must be known by the application and is passed to this GenDig calculation function. The function calculates a new TempKey and returns it.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">param</td><td>pointer to parameter structure </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCA_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="gabf2abd4bd62f47537756c9ab109050c0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gabf2abd4bd62f47537756c9ab109050c0">&#9670;&nbsp;</a></span>atcah_gen_key_msg()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a00173.html#a22bd6643f31f1d75dc3e7ea939f468cd">ATCA_STATUS</a> atcah_gen_key_msg </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="a01213.html">atca_gen_key_in_out</a> *&#160;</td>
          <td class="paramname"><em>param</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Calculate the PubKey digest created by GenKey and saved to TempKey. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">param</td><td>GenKey parameters required to calculate the PubKey digest. Digest is return in the temp_key parameter.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCA_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="ga43ef2dc1159f28fbb100a2b9bf150c0c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga43ef2dc1159f28fbb100a2b9bf150c0c">&#9670;&nbsp;</a></span>atcah_gen_mac()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a00173.html#a22bd6643f31f1d75dc3e7ea939f468cd">ATCA_STATUS</a> atcah_gen_mac </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="a01185.html">atca_gen_dig_in_out</a> *&#160;</td>
          <td class="paramname"><em>param</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function generates mac with session key with a plain text. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">param</td><td>pointer to parameter structure </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCA_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="gab17435577e546d2954bd697f21e6d3cc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gab17435577e546d2954bd697f21e6d3cc">&#9670;&nbsp;</a></span>atcah_hmac()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a00173.html#a22bd6643f31f1d75dc3e7ea939f468cd">ATCA_STATUS</a> atcah_hmac </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="a01181.html">atca_hmac_in_out</a> *&#160;</td>
          <td class="paramname"><em>param</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function generates an HMAC / SHA-256 hash of a key and other information. </p>
<p>The resulting hash will match with the one generated in the device by an HMAC command. The TempKey has to be valid (temp_key.valid = 1) before executing this function.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">param</td><td>pointer to parameter structure </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCA_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="gad456d2c1172343bb40d8cd0e391d44f4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gad456d2c1172343bb40d8cd0e391d44f4">&#9670;&nbsp;</a></span>atcah_include_data()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint8_t* atcah_include_data </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="a01153.html">atca_include_data_in_out</a> *&#160;</td>
          <td class="paramname"><em>param</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function copies otp and sn data into a command buffer. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">param</td><td>pointer to parameter structure </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>pointer to command buffer byte that was copied last </dd></dl>

</div>
</div>
<a id="gaa0df5937081037684ce2894a8cc2c1e5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaa0df5937081037684ce2894a8cc2c1e5">&#9670;&nbsp;</a></span>atcah_io_decrypt()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a00173.html#a22bd6643f31f1d75dc3e7ea939f468cd">ATCA_STATUS</a> atcah_io_decrypt </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="a01161.html">atca_io_decrypt_in_out</a> *&#160;</td>
          <td class="paramname"><em>param</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Decrypt data that's been encrypted by the IO protection key. The ECDH and KDF commands on the ATECC608A are the only ones that support this operation. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">param</td><td>Parameters required to perform the operation.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCA_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="ga44361cadf1819cea687208eeadd57059"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga44361cadf1819cea687208eeadd57059">&#9670;&nbsp;</a></span>atcah_mac()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a00173.html#a22bd6643f31f1d75dc3e7ea939f468cd">ATCA_STATUS</a> atcah_mac </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="a01177.html">atca_mac_in_out</a> *&#160;</td>
          <td class="paramname"><em>param</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function generates an SHA-256 digest (MAC) of a key, challenge, and other information. </p>
<p>The resulting digest will match with the one generated by the device when executing a MAC command. The TempKey (if used) should be valid (temp_key.valid = 1) before executing this function.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">param</td><td>pointer to parameter structure </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCA_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="ga9ee18575f8b4c1560f9e5c741403ef1b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga9ee18575f8b4c1560f9e5c741403ef1b">&#9670;&nbsp;</a></span>atcah_nonce()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a00173.html#a22bd6643f31f1d75dc3e7ea939f468cd">ATCA_STATUS</a> atcah_nonce </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="a01157.html">atca_nonce_in_out</a> *&#160;</td>
          <td class="paramname"><em>param</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function calculates host side nonce with the parameters passed. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">param</td><td>pointer to parameter structure </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCA_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="gaed8aa58875c6bdf46a937313e69c6ebb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaed8aa58875c6bdf46a937313e69c6ebb">&#9670;&nbsp;</a></span>atcah_privwrite_auth_mac()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a00173.html#a22bd6643f31f1d75dc3e7ea939f468cd">ATCA_STATUS</a> atcah_privwrite_auth_mac </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="a01189.html">atca_write_mac_in_out</a> *&#160;</td>
          <td class="paramname"><em>param</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function calculates the input MAC for the PrivWrite command. </p>
<p>The PrivWrite command will need an input MAC if SlotConfig.WriteConfig.Encrypt is set.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">param</td><td>pointer to parameter structure </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCA_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="ga4c89f8023aec521281824c0e35713baa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga4c89f8023aec521281824c0e35713baa">&#9670;&nbsp;</a></span>atcah_secureboot_enc()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a00173.html#a22bd6643f31f1d75dc3e7ea939f468cd">ATCA_STATUS</a> atcah_secureboot_enc </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00994.html#gaa60674423eaa2e7f37f2c1cf2855f2d7">atca_secureboot_enc_in_out_t</a> *&#160;</td>
          <td class="paramname"><em>param</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Encrypts the digest for the SecureBoot command when using the encrypted digest / validating mac option. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">param</td><td>Data required to perform the operation.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCA_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="gaa795bec90432fbfa194913d8b4098fab"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaa795bec90432fbfa194913d8b4098fab">&#9670;&nbsp;</a></span>atcah_secureboot_mac()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a00173.html#a22bd6643f31f1d75dc3e7ea939f468cd">ATCA_STATUS</a> atcah_secureboot_mac </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00994.html#gace9a9d1e2e34d294e573098600b6f061">atca_secureboot_mac_in_out_t</a> *&#160;</td>
          <td class="paramname"><em>param</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Calculates the expected MAC returned from the SecureBoot command when verification is a success. </p>
<p>The result of this function (param-&gt;mac) should be compared with the actual MAC returned to validate the response.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">param</td><td>Data required to perform the operation.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCA_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="gad7e2217cd71b77b6c1b08f2f2f6f0a3e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gad7e2217cd71b77b6c1b08f2f2f6f0a3e">&#9670;&nbsp;</a></span>atcah_sha256()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a00173.html#a22bd6643f31f1d75dc3e7ea939f468cd">ATCA_STATUS</a> atcah_sha256 </td>
          <td>(</td>
          <td class="paramtype">int32_t&#160;</td>
          <td class="paramname"><em>len</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint8_t *&#160;</td>
          <td class="paramname"><em>message</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t *&#160;</td>
          <td class="paramname"><em>digest</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function creates a SHA256 digest on a little-endian system. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">len</td><td>byte length of message </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">message</td><td>pointer to message </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">digest</td><td>SHA256 of message </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCA_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="ga680045caed6e8f6e136e1a2dc3fe1c9e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga680045caed6e8f6e136e1a2dc3fe1c9e">&#9670;&nbsp;</a></span>atcah_sign_internal_msg()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a00173.html#a22bd6643f31f1d75dc3e7ea939f468cd">ATCA_STATUS</a> atcah_sign_internal_msg </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00988.html#gafb234ccd6a80d09c0efbe336c2354267">ATCADeviceType</a>&#160;</td>
          <td class="paramname"><em>device_type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="a01217.html">atca_sign_internal_in_out</a> *&#160;</td>
          <td class="paramname"><em>param</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Builds the full message that would be signed by the Sign(Internal) command. </p>
<p>Additionally, the function will optionally output the OtherData data required by the Verify(In/Validate) command as well as the SHA256 digest of the full message.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">device_type</td><td>Device type to perform the calculation for. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">param</td><td>Input data and output buffers required.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCA_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="ga03632bc31f21bec0d13d4f0cab198958"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga03632bc31f21bec0d13d4f0cab198958">&#9670;&nbsp;</a></span>atcah_verify_mac()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a00173.html#a22bd6643f31f1d75dc3e7ea939f468cd">ATCA_STATUS</a> atcah_verify_mac </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00994.html#ga39d794a93edb13943760550086940fa4">atca_verify_mac_in_out_t</a> *&#160;</td>
          <td class="paramname"><em>param</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Calculate the expected MAC on the host side for the Verify command. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">param</td><td>Data required to perform the operation.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCA_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="ga47853951c57803eff1432780bf360057"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga47853951c57803eff1432780bf360057">&#9670;&nbsp;</a></span>atcah_write_auth_mac()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a00173.html#a22bd6643f31f1d75dc3e7ea939f468cd">ATCA_STATUS</a> atcah_write_auth_mac </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="a01189.html">atca_write_mac_in_out</a> *&#160;</td>
          <td class="paramname"><em>param</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function calculates the input MAC for the Write command. </p>
<p>The Write command will need an input MAC if SlotConfig.WriteConfig.Encrypt is set.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">param</td><td>pointer to parameter structure </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCA_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<h2 class="groupheader">Variable Documentation</h2>
<a id="ga88d82c85f774fa04ccf768e566fec194"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga88d82c85f774fa04ccf768e566fec194">&#9670;&nbsp;</a></span>challenge</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">challenge</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>[in] Pointer to 32-byte Challenge data used in MAC command, depending on mode. </p>

</div>
</div>
<a id="ga4155a23e70d1bf07de5d316efebeaee7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga4155a23e70d1bf07de5d316efebeaee7">&#9670;&nbsp;</a></span>crypto_data</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">crypto_data</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>[in,out] Pointer to 32-byte data. Input encrypted data from Read command (Contents field), output decrypted. </p>

</div>
</div>
<a id="ga9be4eee4ac6c9248a824d093f165839e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga9be4eee4ac6c9248a824d093f165839e">&#9670;&nbsp;</a></span>curve_type</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">curve_type</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>[in] Curve type used in Verify command (Param2). </p>

</div>
</div>
<a id="gab0d96f9d852c2058c2546a1338e87544"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gab0d96f9d852c2058c2546a1338e87544">&#9670;&nbsp;</a></span>key <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">key</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>[in] Pointer to 32-byte key used to generate MAC digest. </p>

</div>
</div>
<a id="gab0d96f9d852c2058c2546a1338e87544"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gab0d96f9d852c2058c2546a1338e87544">&#9670;&nbsp;</a></span>key <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">key</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>[in] Pointer to 32-byte key used to generate HMAC digest. </p>

</div>
</div>
<a id="ga3eedc11953a89e931ede529eb72592ac"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga3eedc11953a89e931ede529eb72592ac">&#9670;&nbsp;</a></span>key_id <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">key_id</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>[in] KeyID parameter used in MAC command (Param2). </p>

</div>
</div>
<a id="ga3eedc11953a89e931ede529eb72592ac"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga3eedc11953a89e931ede529eb72592ac">&#9670;&nbsp;</a></span>key_id <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">key_id</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>[in] KeyID parameter used in HMAC command (Param2). </p>

</div>
</div>
<a id="ga1a6b6fb557d8d37d59700faf4e4c9167"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga1a6b6fb557d8d37d59700faf4e4c9167">&#9670;&nbsp;</a></span>mode <span class="overload">[1/3]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">mode</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>[in] Mode parameter used in Nonce command (Param1). </p>

</div>
</div>
<a id="ga1a6b6fb557d8d37d59700faf4e4c9167"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga1a6b6fb557d8d37d59700faf4e4c9167">&#9670;&nbsp;</a></span>mode <span class="overload">[2/3]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">mode</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>[in] Mode parameter used in MAC command (Param1). </p>

</div>
</div>
<a id="ga1a6b6fb557d8d37d59700faf4e4c9167"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga1a6b6fb557d8d37d59700faf4e4c9167">&#9670;&nbsp;</a></span>mode <span class="overload">[3/3]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">mode</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>[in] Mode parameter used in HMAC command (Param1). </p>

</div>
</div>
<a id="ga02a9d64ea363dc3b231b8cc0b317de8a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga02a9d64ea363dc3b231b8cc0b317de8a">&#9670;&nbsp;</a></span>num_in</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">num_in</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>[in] Pointer to 20-byte NumIn data used in Nonce command. </p>

</div>
</div>
<a id="ga8712cb73a4d6b370658d8bc9a77fba3e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga8712cb73a4d6b370658d8bc9a77fba3e">&#9670;&nbsp;</a></span>otp <span class="overload">[1/3]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">otp</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>[in] pointer to one-time-programming data </p>

</div>
</div>
<a id="ga8712cb73a4d6b370658d8bc9a77fba3e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga8712cb73a4d6b370658d8bc9a77fba3e">&#9670;&nbsp;</a></span>otp <span class="overload">[2/3]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">otp</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>[in] Pointer to 11-byte OTP, optionally included in MAC digest, depending on mode. </p>

</div>
</div>
<a id="ga8712cb73a4d6b370658d8bc9a77fba3e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga8712cb73a4d6b370658d8bc9a77fba3e">&#9670;&nbsp;</a></span>otp <span class="overload">[3/3]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">otp</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>[in] Pointer to 11-byte OTP, optionally included in HMAC digest, depending on mode. </p>

</div>
</div>
<a id="gad87f95f0faf0c6fdfe94040efcb14860"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gad87f95f0faf0c6fdfe94040efcb14860">&#9670;&nbsp;</a></span>p_temp</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">p_temp</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>[out] pointer to output buffer </p>

</div>
</div>
<a id="gacea547aa606ca17f8da337a1b58972a1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gacea547aa606ca17f8da337a1b58972a1">&#9670;&nbsp;</a></span>public_key</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">public_key</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>[in] Pointer to the public key to be used for verification </p>

</div>
</div>
<a id="ga75f7197e2840bcf9fe00722e739fdd9c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga75f7197e2840bcf9fe00722e739fdd9c">&#9670;&nbsp;</a></span>rand_out</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">rand_out</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>[in] Pointer to 32-byte RandOut data from Nonce command. </p>

</div>
</div>
<a id="ga8ab7bcb35ce5bba05608c72da6b4a0d3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga8ab7bcb35ce5bba05608c72da6b4a0d3">&#9670;&nbsp;</a></span>response <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">response</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>[out] Pointer to 32-byte SHA-256 digest (MAC). </p>

</div>
</div>
<a id="ga8ab7bcb35ce5bba05608c72da6b4a0d3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga8ab7bcb35ce5bba05608c72da6b4a0d3">&#9670;&nbsp;</a></span>response <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">response</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>[out] Pointer to 32-byte SHA-256 HMAC digest. </p>

</div>
</div>
<a id="gac97246a9059d3f687edfcbe5abfc5d8f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gac97246a9059d3f687edfcbe5abfc5d8f">&#9670;&nbsp;</a></span>signature</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">signature</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>[in] Pointer to ECDSA signature to be verified </p>

</div>
</div>
<a id="ga7276bd20c5842e712da638d25ceb6d92"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga7276bd20c5842e712da638d25ceb6d92">&#9670;&nbsp;</a></span>sn <span class="overload">[1/3]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">sn</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>[in] pointer to serial number data </p>

</div>
</div>
<a id="ga7276bd20c5842e712da638d25ceb6d92"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga7276bd20c5842e712da638d25ceb6d92">&#9670;&nbsp;</a></span>sn <span class="overload">[2/3]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">sn</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>[in] Pointer to 9-byte SN, optionally included in MAC digest, depending on mode. </p>

</div>
</div>
<a id="ga7276bd20c5842e712da638d25ceb6d92"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga7276bd20c5842e712da638d25ceb6d92">&#9670;&nbsp;</a></span>sn <span class="overload">[3/3]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">sn</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>[in] Pointer to 9-byte SN, optionally included in HMAC digest, depending on mode. </p>

</div>
</div>
<a id="gaa17e031da4b22938bed1c21161ba371a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaa17e031da4b22938bed1c21161ba371a">&#9670;&nbsp;</a></span>temp_key <span class="overload">[1/5]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">temp_key</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>[in,out] Pointer to TempKey structure. </p>

</div>
</div>
<a id="gaa17e031da4b22938bed1c21161ba371a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaa17e031da4b22938bed1c21161ba371a">&#9670;&nbsp;</a></span>temp_key <span class="overload">[2/5]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">temp_key</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>[in,out] Pointer to TempKey structure. </p>

</div>
</div>
<a id="gaa17e031da4b22938bed1c21161ba371a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaa17e031da4b22938bed1c21161ba371a">&#9670;&nbsp;</a></span>temp_key <span class="overload">[3/5]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">temp_key</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>[in,out] Pointer to TempKey structure. </p>

</div>
</div>
<a id="gaa17e031da4b22938bed1c21161ba371a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaa17e031da4b22938bed1c21161ba371a">&#9670;&nbsp;</a></span>temp_key <span class="overload">[4/5]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">temp_key</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>[in,out] Pointer to TempKey structure. </p>

</div>
</div>
<a id="gaa17e031da4b22938bed1c21161ba371a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaa17e031da4b22938bed1c21161ba371a">&#9670;&nbsp;</a></span>temp_key <span class="overload">[5/5]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">temp_key</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>[in,out] Pointer to TempKey structure. </p>

</div>
</div>
<a id="ga876993158b491f4626155b468ffb6edc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga876993158b491f4626155b468ffb6edc">&#9670;&nbsp;</a></span>zero</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">zero</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>[in] Zero parameter used in Nonce command (Param2). </p>

</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.15 </li>
  </ul>
</div>
</body>
</html>
